Repository navigation
fix(benchmark): qualify returned legacy budget interruptions - #8221
Conversation
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; gpt-6-astra; OpenAI; runtime_reported; ultra.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
保留旧版 benchmark worker 的操作者需要在真实预算中断后继续原会话。旧 worker 已写入停止回执,恢复入口却只接受仍在执行或额度失败的旧状态,导致完整现场也进不了原会话验证;现在能识别这次已返回的预算停止,并继续检查同一容器、原始文件和真实 native 中断尾。独立验证已覆盖旧格式证据进入共享接收端、原会话继续下一轮,以及 Stop、改写回执和超出原窗口的活动被拒绝。本 PR 不给额外预算、不恢复评分器、不自动重启,也不把部分文件或一次会话读取当成完整恢复成功。
改动思路 / Approach
沿原有 Docker source proof 和共享 interruption reader 修正旧状态兼容,避免另造恢复调度器。本次只打通已返回预算停止的原会话验证;完整源、评分器机会和新的有限预算仍由原 owner 独立准入。先检查原容器已停止且重启命令惰性,再核原 scheduler、待返回标记、唯一末回执和全部参与文件。对于新接纳的旧状态,原生过程上界取回执秒数,而不是后来维护时停止容器的时间。之后仍由原 native reader 检查真实中断尾,由当前 Goal/session admission 决定是否允许下一轮;没有另造重试或预算 owner。
具体改动 / Changes
关键代码讲解
prepare_stopped_recovery(benchmark/edgebench/stopped_recovery.py)增加确切的历史 stopped/75 分支:不允许现代 attempt ID、未知 failure、成功回执或预派发预算短路。调用者提供的 session 必须与原回执一致;最新回执排序和 quota-failed 路径共用,原字节不重写。
read_interrupted_host(benchmark/runtime/interruption_recovery.py)仅在这种已返回的旧状态中,允许原 hard deadline 晚于回执,兼容旧 worker 预留收尾时间;同时重新核对回执时间,原 native_interrupted_turn 继续拒绝窗口之外的 native 活动。其余 started/modern 路径保留原时间限制。
基准合同是目标分支的 retained-filesystem continuation:unchanged-source、interrupted-native 和 separate-authority 三项均落在原 owner 上。README 明确兼容条件;没有改变普通 completed checkpoint、评分机会或新的有限预算准入。
对主干的风险 / Risks
PASS:独立复跑 69 项 focused tests,包含真实 SQLite、scheduler/worker 子进程和 synthetic CLI;两个 opt-in Docker 用例另在隔离 Linux 中实际执行。独立 base/head 配对显示 started、过期条件及 quota-failed 路径的返回、原字节和权限标记一致;旧 returned75 的接受是明确的预期变化。预派发短路仍拒绝,回执仅修改时间也被接收端拒绝。Stop、改变 profile/session、晚到 native 活动与跨容器复制证明均有拒绝覆盖。
初次本地/guest 测试分别遇到导入路径与非物理临时路径的 fixture 问题,保留后以精确工作树及物理路径重跑;没有修改产品代码或放宽断言。远端部分 browser CI 失败、其他任务仍待完成,原因未归因;不把它们描述为通过或已证实无关。当前差异的 Python/native 不变量有独立覆盖,合并门仍独立。此处的实际 Docker 是 synthetic source,native 会话读取也不等于模型恢复,更不等于评分器权威已经接回。
语义与 CI 对齐
本次复用现有状态和证明字段,只增加持久旧格式兼容;没有通过扩大预算、改写历史、跳过完整参与文件或清空机会来获得通过。完整 workspace、native scorer 历史和当前执行准入仍是实际恢复的硬条件。
我的整体评价 / Verdict
在 b7f28a6096f6c3b76606776b2b8371b752b1eab5 未发现阻塞问题。对长程工作的改进是让已获授权的旧版预算中断可以走原会话验证,并保留失败、历史和原收尾时间,而不是声称模型成绩改善。沿既有 benchmark CLI 的恢复流程兼容旧状态;没有新增页面、配置项或确认轮次。未执行生产实验恢复,也未验证模型策略收益。保留历史兼容有明确持久化依据,共享最新回执排序的重构足够局部;不能据这次审批跳过独立 scorer、完整源和 finite phase 准入。
English verdict: APPROVE at b7f28a6. No blocking finding after independent source, real SQLite/process, Docker and base/head checks. This is not production recovery or merge authorization.
b7f28a6 to
3e49d88
Compare
|
Hi @loopx-agent, the DCO If the log confirms a missing |
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com> (cherry picked from commit b7f28a6) Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
3e49d88 to
23fe65c
Compare
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent | gpt-6.1-sol | OpenAI | runtime_reported | reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
保留旧版 benchmark worker 的操作者,可以用已经返回的预算停止记录进入原会话验证。旧生产端只接收仍为 started 或已验证的 quota failure,旧格式 stopped/75 留在验证入口外。同一停止容器中的原始回执进入现有接收端,原生结束窗口按回执秒数核对,原结算证据得以保留。当前范围是原容器、原始参与文件和原生中断尾的资格核验。实际模型续跑、完整工作区恢复与评分器资格仍需各自验证。
改动思路 / Approach
旧停止记录由已有 Docker 源证据 owner 读取,原生中断与当前准入分别由已有接收端核验。当前 PR 边界是兼容已返回的旧预算停止,恢复仍使用同一容器、原会话和独立的有限预算。生产端以原回执的时间上界限定原生读取,保留独立原硬截止时间。接收端再核对时间和会话,并沿现有准入流程继续。
具体改动 / Changes
按 benchmark/README.md 的 c3dcb92bdb4520d643a57912090252c51a7c0fcf 版本中的 retained-filesystem continuation 评审。当前 main 比较为 5 个文件、增加 171 行、删除 10 行,一个签署提交。范围对比与旧已审补丁一致,最新主干的合成树无冲突。 固定规范
- unchanged-source。使用相同的停止容器、物理参与文件和唯一末回执。可选安装只读回同容器的原证明,保留旧状态与原回执。
- interrupted-native。返回的旧停止以回执秒数限定原生结束,保留原硬截止。接收端核对同一原生会话中的实际 interrupted 尾部和待处理效果。
- separate-authority。证明只提供读回资格,原 Goal/session 准入、有限继续及 evaluator 由已有 owner 处理。
关键代码讲解
prepare_stopped_recovery核对停止容器、惰性命令、原物理参与文件和未清理的 Host witness。新增分支要求旧stopped/75、唯一最后回执、已调用、超预算及实际超时。预派发短路、失败、当前 attempt ID 或后续回执仍拒绝。 源验证 回执窗口_stopped_source验证原容器命名空间和参与文件的原字节。read_interrupted_host针对旧返回路径核对当前回执的秒级时间,再沿用原 session 与 Goal 准入。现代路径继续使用进程观察记录。 接收原源 接收时间窗native_interrupted_turn读回同一 session 的实际 interrupted 末轮,验证时间窗、未完成效果和两次历史一致。原已完成 checkpoint 条件不变。 原生读取
对主干的风险 / Risks
- PASS。作者在当前精确 head 的固定 Linux 运行 76 项,通过实际 Docker 原容器安装、读回和跨容器复制拒绝,并覆盖真实 SQLite、scheduler 和 worker 子进程。provider 使用合成原生 CLI 输入。
- PASS。独立比较当前 main 和 head 的五种源形态。已有 started、原截止拒绝与 typed quota failure 完全一致。旧返回实例保留硬截止 130,使用回执秒 110。只改回执 mtime 且保留原字节时,实际接收端仍拒绝。另以实际已退出进程复验现代 deadline 不合格路径,两版本返回同一错误。
- PASS。独立同镜像完整运行 75 项通过,包含全部旧 returned 变更路径与两个真实 Docker 用例。随后串行复验,现代成功路径和旧路径拒绝晚到 native activity 两项通过。
- FAIL。独立完整运行有一个现代成功夹具因原进程窗未覆盖硬截止而保持原状态。主干与 head 对同一个实际已退出进程都给出相同拒绝。串行复验的旧正例已完成同会话恢复和后续两次 wake,末尾计数缺首次合成 stdin 日志。故意延迟首次读取的主干与 head 对照都在进入恢复前出现该缺项。较早并行复查另有一个首次 wake 在恢复前失败,保留其原结果。
- PASS。主干目标的 5 项直接及 19 项定向 premerge 检查通过,benchmark 人工门单列。按本次策略未查询托管 CI。
语义与 CI 对齐
旧回执的时间只有秒级,遇到同秒歧义或后续原生活动仍保留原状态。恢复资格按本次原生进程与会话证据判断,实际评分机会与外层续跑继续走原独立准入。
我的整体评价 / Verdict
批准 23fe65c58830978e0d90de15a1537983eda4f8cd。已有生产端和接收端可以核验精确旧返回状态,并保持原回执、原会话和独立资格边界。此次只改 benchmark 恢复 CLI、运行时和测试,视觉审阅不适用。
English verdict: APPROVE — At 23fe65c, the exact legacy returned budget stop reaches the existing original-session recovery path. The unchanged source, receipt cutoff and separate admission gates were verified.
Older benchmark workers can persist a real model interruption as
stopped/75without an attempt ID. The retained-source producer previously accepted onlystartedor a qualified quota failure, so an otherwise verifiable returned budget stop could not reach the existing same-session recovery path.This extends that producer and its shared receiver to accept the exact legacy returned-stop shape. It requires a stopped inert original container, unchanged participants, a unique latest invoked/timed-out budget receipt, original agent session, and current Goal/session admission. The original scheduler state and receipt remain unchanged. The native window ends at the receipt’s recorded second, rather than a later maintenance container stop; the original hard deadline is retained even if the older worker reserved cleanup time. The native reader must still verify an actual interrupted final Turn with no pending effect.
Validation: 102 focused tests pass, including the real SQLite → scheduler → worker subprocess → native-session recovery path with a synthetic CLI; the two positive paths were re-run after adding an explicit unchanged-receipt assertion. Two network-disabled Docker cases pass for inert proof installation, same-container replay and copied-proof rejection. Negative coverage includes Stop, changed binding/profile, live source, ambiguous/later receipts, new attempt IDs, wrong session, success/unknown failures and native activity after the receipt window. Existing modern interruption and explicit quota-continuation paths remain covered. Premerge has zero direct/selected check failures; its
benchmark_sensitivemaintainer-review hold remains.The change stays in benchmark-toolkit’s existing Docker/native-process provider; it adds no configuration, Core state machine, UI, account operation or automatic retry. It neither grants a new budget nor restores evaluator authority. Read-only qualification of a retained native session does not establish complete workspace recovery or a successful model continuation. Full source qualification and independent evaluator history/opportunity/cooldown restoration remain execution prerequisites. No model or live experiment was started by this change.
The stopped-source and finite-continuation prerequisites now ship on main.
Main target
#8217 landed in main at
5d4dbc8d789b8e7d35b2b2ccced42b8b31c12b1e. This proposal now contains only the five-file legacy receipt patch in one signed commit. The range comparison matches the earlier stacked slice exactly. Its isolated Linux validation passed 76 interruption and stopped-source cases on the stacked source, including both real Docker proof cases. The main-target head has a clean merge preview and bilingual diff check.